<?php

include_once('classes/Cliente.class.php');

class ClienteController extends Controller {
    
    public function __construct(){
        parent::__construct('CLIENTE');
    }
    
    public function index(){
        $this->MyAccount();
    }
    
    public function Login(){
        if(self::isLogged()){
            Util::redirectTo('Cliente/MyAccount');
            return;
        }
        $ArURL = Util::getParameters();
        if(isset($ArURL['ReturnURL'])){
            $this->save('ReturnURL', $ArURL['ReturnURL']);
        }
        $this->view('login');
    }
    
    public function MyAccount(){
        $Cliente = SessionHelper::getSession('ClienteLogado');
        $this->save('PassagensCliente', PassagemModel::GetByCliente($Cliente->getCPF()));
        $this->view('minhaconta');
    }
    
    public static function isLogged(){
        return SessionHelper::existsSession('ClienteLogado');
    }
    
    public function PerformLogin(){
        $Cliente = ClienteModel::Login($_POST['CPF'], $_POST['senha']);
        if($Cliente)
            SessionHelper::saveSession('ClienteLogado', $Cliente);
        else {
            SessionHelper::saveMessage('Erro ao logar no sistema. Verifique se sua senha está correta.', 'error');
            util::returnPage();
            return;
        }
        util::redirectTo(empty($_POST['ReturnURL']) ? 'Cliente/MyAccount' : base64_decode($_POST['ReturnURL']));
    }
    
    public function LogOut(){
        SessionHelper::deleteSession('ClienteLogado');
        Util::redirectTo('');
    }
    
    public function SignUp(){
        if(SessionHelper::existsSession('ClienteLogado')){
            SessionHelper::saveMessage('Você já está logado no sistema.', 'notice');
            Util::redirectTo('Cliente/MyAccount');
            return;
        }
        $ArURL = Util::getParameters();
        $this->save('ReturnURL', $ArURL['ReturnURL']);
        $this->save('AllCidades', CidadeModel::GetAllCidade());
        $this->view('cadastro');
    }
    
    public function PerformSignUp(){
        if(!$this->validaCadastro($_POST)){
            $this->save('LastSearch', $_POST);
            Util::returnPage();
            return;
        }
        $sucesso = ClienteModel::Save($_POST['cpf'], $_POST['nome'],$_POST['endereco'],$_POST['bairro'],$_POST['cep'],
                $_POST['telResidencial'],$_POST['telCelular'],$_POST['email'],$_POST['dataDeNascimento'],
                $_POST['cidade'],$_POST['senha']);
        if($sucesso === false){
            SessionHelper::saveMessage("Erro ao efetuar cadastro. " . DB::getInstance()->lastError(), 'error');
            Util::returnPage();
            return;
        }
        $Cliente = ClienteModel::Login($_POST['cpf'], $_POST['senha']);
        SessionHelper::saveSession('ClienteLogado', $Cliente);
        SessionHelper::saveMessage('Cadastro efetuado com sucesso.');
        Util::redirectTo(empty($_POST['ReturnURL']) ? 'Cliente/MyAccount' : base64_decode($_POST['ReturnURL']));
    }
    
    private function validaCadastro($ArForm){
        $message = '';
        if(trim($ArForm['nome']) == ''){
            $message = 'É necessário informar o nome do cliente.';
        } else if(trim($ArForm['cpf']) == '' || !Util::validaCPF($ArForm['cpf'])){
            $message = 'CPF inválido.';
        } else if(trim($ArForm['email']) == '' || !Util::validaEmail($ArForm['email'])){
            $message = 'E-mail inválido.';
        } else if(trim($ArForm['endereco']) == ''){
            $message = 'O campo endereço é obrigatório.';
        } else if(trim($ArForm['bairro']) == ''){
            $message = 'O campo bairro é obrigatório.';
        } else if(trim($ArForm['cep']) == '' || !Util::validaCEP($ArForm['cep'])){
            $message = 'O campo CEP é obrigatório.';
        } else if(trim($ArForm['telResidencial']) == '' || !Util::validaTelefone($ArForm['telResidencial'])){
            $message = 'Telefone residencial inválido.';
        } else if(trim($ArForm['telCelular']) == '' || !Util::validaTelefone($ArForm['telCelular'])){
            $message = 'Telefone celular inválido.';
        } else if(trim($ArForm['dataDeNascimento']) == '' || !Util::validaData($ArForm['dataDeNascimento'])){
            $message = 'Data de nascimento inválida.';
        } else if(empty($ArForm['cidade'])){
            $message = 'O campo cidade é obrigatório.';
        } else if(trim($ArForm['senha']) == '' || strlen($ArForm['senha']) < 6){
            $message = 'Senha inválida. A senhe deve ter no mínimo 6 caracteres.';
        } else if($ArForm['senha'] != $ArForm['senhaConf']){
            $message = 'Confirmação de senha incorreta.';
        }
        
        if(!empty($message))
            SessionHelper::saveMessage ($message, 'error');
        
        return !SessionHelper::existsMessage();
    }
    
}

?>
